Messaging Interface Based on Caller of an Incoming Call

ABSTRACT

In one embodiment, a method includes displaying by a mobile computing device of a first user a notification of an incoming call. The notification identifies a second user associated with a source of the incoming call. The method further includes detecting by the mobile computing device user input provided during the display of the notification of the incoming call. In response to the user input, one or more previous communications between the first and second users is determined by the mobile computing device. The method further includes displaying by the mobile computing device the one or more previous communications.

TECHNICAL FIELD

This disclosure generally relates to a messaging interface based on acaller of an incoming call.

BACKGROUND

Individuals may communicate with each other using a variety of methodsincluding voice calls, video calls, email, text messaging, chatting,social networking messages, and other communication methods. Acommunication participant may select a method of communication based ona myriad of factors such as the cost of the communication method, thelocation or environment of one or more of the communicationparticipants, the speed of the communication method, or other factors.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example social networking environment.

FIG. 2 illustrates an example call notification interface providing anotification of an incoming call from a caller.

FIG. 3 illustrates an example messaging interface displaying aconversation between a caller and a callee.

FIG. 4 illustrates an example messaging interface displaying aconversation including various types of communications.

FIG. 5 illustrates an example method for providing a messaging interfacebased on a caller of an incoming call.

FIG. 6 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

In particular embodiments, a method includes displaying by a mobilecomputing device of a first user a notification of an incoming call. Thenotification may identify a second user associated with a source of theincoming call. The mobile computing device may detect user inputprovided during the display of the notification of the incoming call. Inresponse to the user input, the mobile computing device may determineone or more previous communications between the first and second usersand display the one or more previous communications.

Modern computer systems are able to communicate in a variety of ways.For example, a device may be capable of communication using voice calls,video calls, emails, text messaging, social media websites, and othercommunication methods. Such functionality may allow a user of the deviceto choose which type of communication to use in a communication sessionwith another user. In certain situations, a certain type ofcommunication may be preferable to other types of communication. Forexample, a user may select a communication type based on the cost,speed, or ease of use of the particular type of communication.

In certain situations, a user may receive a notification of an incomingcall but may prefer to communicate with the caller using a differentcommunication method. For example, the user may be in a location that isnot conducive to communication via a call, such as a library or an areawith poor signal reception. As another example, a user may haveexhausted an allotment of minutes of a cellular phone plan. As yetanother example, a user may not feel like talking on the phone.Particular embodiments of the present disclosure allow the user to enteruser input to transition from a call notification interface to amessaging interface. The messaging interface may provide an option tosend a message, such as a text message or email, to the caller in lieuof answering the call.

In some situations, a user may want to view previous communications withthe caller before answering the call or communicating with the callervia a different communication type. In various embodiments, themessaging interface displays a conversation between the caller and thecallee. The conversation may include previous communications between thecaller and the callee. In particular embodiments, the communication viewincludes an aggregation of different communication types. Theembodiments described above provide context for an incoming call andfacilitate use of a preferred type of communication.

FIG. 1 illustrates an example social networking environment. The socialnetworking environment may include a social networking system 100,client devices 180 a, 180 b, and 180 c, wireless cellular network 300,and third-party services including third-party websites 190, third-partyinstant messaging (IM) service 210, third-party social media site 220,voice-over-Internet Protocol (VoIP) service 230, video service 240, andother third-party services 250. Client devices 180 a and 180 b aredepicted as mobile phones and client device 180 c is depicted as adesktop computer, but client devices 180 may comprise any type of mobileor stationary computing device, including a mobile phone, laptop,netbook, tablet, desktop computer, cable box, television, or othersuitable device. Client devices 180 a and 180 b may connect to network160 through wireless cellular network 300 and may be coupled to clientdevice 180 c through network 160.

Third-party websites 190 may include, but are not limited to,social-networking websites, shopping sites, review sites such as Yelp!,or any third-party website with which a user maintains an account tointeract with content or other users. Third-party IM service 210 mayinclude, but is not limited to, Google Chat or a similar serviceallowing users to send instant messages to each other. Third-partysocial media site 220 may include, but is not limited to, Twitter,LinkedIn, Google Plus, or other social media site. VoIP service 230 mayinclude, but is not limited to, Skype or a similar service that offersvoice calls over IP. Video service 240 may include, but is not limitedto, FaceTime, Tango, or other similar service that offers video calls.Other services 250 may include e-mail servers, storage facilities, orother third-party services that may communicate with social networkingsystem 100 or clients 180 through network 160.

A client device 180 may interact with the third-party services through aweb browser or a dedicated application local to the client device 180.For example, a client devices 180 may interact with third-party instantmessaging service 210, such as Google Chat, by logging into a user'sGmail account via a web browser or by installing and running a dedicatedGoogle Talk application. Similarly, a client device 180 may interactwith a third-party social media site 220, such as Twitter, via a browseror through a dedicated Twitter application. Client devices may similarlycommunicate with third-party websites 190, VoIP service 230, videoservice 240, and other third-party services 250.

A user of a client device 180 interacts with the social networkingsystem 100 via an application, such as a web browser or a dedicatedapplication of client device 180, to perform operations such as browsingcontent, posting and sending communications, retrieving and sortingcommunications received from other users, and the like. Communicationsmay be in any suitable format such as electronic mail (“e-mail”)messages, chat messages, comments left on a user's webpage, and shortmessage service (SMS) text messages. Messages may contain text or othercontent such as pictures, videos, sounds, and attachments. Each user hasa mailbox that includes communications that are both sent and receivedby the user.

Client device 180 a may also interact with other client devices 180through wireless network 300 or network 160. For example, client device180 a may participate in VoIP or non-VoIP calls with other cellularphones, computers, landlines, or other communication devices, transmitand receive texts or multi-media message through the SMS or multimediamessaging service (MMS) channels, or receive push notifications throughthe SMS control channel.

Third party services may interact with social networking system 100 viaan application programming interface (API) 150. For example, a thirdparty website 190 may perform operations supported by the API, such asdelivering user communications to the social network system 100,retrieving user communications stored by the social networking system100, and obtaining social information about users of the socialnetworking system 100.

Social networking system 100 enables users to interact with each otherthrough the system. The social networking system 100 may create andstore a record, often referred to as a user profile, for each user. Theuser profile may include a user's contact information, backgroundinformation, employment information, demographic information, personalinterests, or other suitable information. Each user profile may bestored as an object in object store 110. The social networking system100 may also create and store a record of a user's relationship withother users in the social networking system 100. In particularembodiments, this information may be stored as a social graph in graphinformation store 120. In the social graph, individuals, groups,entities, or organizations may be represented as nodes in the graph andthe nodes may be connected by edges that represent one or more specifictypes of interdependency. Social networking system 100 may also provideservices (e.g., wall-posts, photo-sharing, event organization,messaging, games, or advertisements) to facilitate social interactionbetween users in the social networking system 100. The social networkingsystem 100 may transmit content and communications related to itsservices to a user's client device 180 over network 160.

Mailbox module 170 of social networking system 100 providesfunctionality for powering the messaging system of social networkingsystem 100. In a particular embodiment, the mailbox module 170 receives,organizes, and presents communications to or from users in the socialnetworking system 100 via an interactive user interface. The interactiveuser interface may be, for example, a webpage that is viewed by a userwith a web browser or a dedicated application residing on the user'scomputing device 180. In particular embodiments, the interactive userinterface may be a combination of server and client side rendering,depending on processing and bandwidth capacity. Functionality providedby mailbox module 170 may include organizing communications intoconversations, quick reply, categorizing conversations, conversationstates, conversation searching, new message notification, formatting ofe-mails, forwarding communications between conversations, and invitationbased conversion, among others. In particular embodiments,communications occurring outside of the social networking system 100 areaggregated with communications occurring through the social networkingsystem by mailbox module 170 at any suitable time, such as when a clientdevice 180 performs an aggregation operation. In particular embodiments,communications requiring interaction with third-party services arepulled automatically through one or more APIs 150 and stored at mailboxmodule 170. In particular embodiments, a mixture of client-push andserver-pulls are used to aggregate communications from various sourcesat mailbox module 170. In particular embodiments, a local application ona client device 180 performs one or more of the operations of mailboxmodule 170 and pulls communications from social network 100 andthird-party services to client device 180.

Network 160 may include one or more interconnected networks over whichvarious systems and hosts described herein may communicate. Thisdisclosure contemplates any suitable network 160. As an example and notby way of limitation, one or more portions of network 160 may include anad hoc network, an intranet, a private network, an extranet, a virtualprivate network (VPN), a local area network (LAN), a wireless network, awireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), ametropolitan area network (MAN), a portion of the Internet, apacket-based wide-area network, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, a satellitenetwork, a paging network, or a combination of two or more of these.

Wireless cellular network 300 may include one or more interconnectednetworks over which various systems and hosts described herein maycommunicate. This disclosure contemplates any suitable wireless cellularnetwork 300. For example, wireless cellular network 300 may include oneor more base stations that communicate wirelessly with one or moreclient devices 180. Wireless cellular network may facilitatecommunication between client devices 180, network 160, and othercomponents coupled to network 160.

FIG. 2 illustrates an example call notification interface 181 providinga notification of an incoming call from a caller. Call notificationinterface 181 may be displayed by device 180 a in response to thereception of an incoming call. An incoming call includes a request toshare information in a generally continuous fashion between device 180 aand a device associated with the caller. As an example and not by way oflimitation, the incoming call may be a request to initiate a voice callwherein the information shared includes audio information, a request toinitiate a video call wherein the information shared includes audio andvisual information, or a request to initiate any other suitable call.

The call notification interface 181 may display an indication to thecallee that an incoming call is being received. For example, in theembodiment depicted, the indication includes an “answer call” button 186a that indicates that an incoming call is present and may be answered bypressing or otherwise selecting the button. As another example, the callnotification interface 181 may also display any suitable informationidentifying the caller. By way of example and not limitation, the calleridentification information may include the name of the caller, the phonenumber of the caller, a location associated with the caller such as awork or home address, or social context information describing socialinformation that has been updated recently with respect to the time ofthe call, such as an activity that the caller is engaged in, the currentlocation of the caller, or one or more individuals that the caller iswith. In the embodiment depicted, the caller identification informationincludes a photo 182 a of the caller, a name 183 of the caller, andsocial context information 184 indicating that the caller is at aparticular business with a particular person. In particular embodiments,the caller identification information is obtained by performing areverse lookup based on information that identifies the source of theincoming call such as the telephone number or network address of thecaller. In particular embodiments, the telephone number, networkaddress, or other identifying information may enable identification of auser profile of the caller that includes the caller identificationinformation. The identified user profile may be a user profile stored bysocial networking system 100, a subset of the user profile stored bysocial networking system 100, or a set of information about the userthat is separate from the user profile stored by social networkingsystem 100. The user profile may be stored locally by device 180 a ormay be stored by one or more network devices (such as object store 110)that transmit the caller identification information to device 180 a uponreception of a request from device 180 a. For example, upon reception ofan call, device 180 a may transmit a telephone number, network address,or a profile identifier of the caller (if device 180 a is able toascertain the profile identifier locally) to social networking system100 and receive the user profile in return.

In particular embodiments, call notification interface 181 providesinstructions that specify how a transition to a messaging interface maybe performed. For example, the instructions may indicate particular userinput that may be entered to transition to the messaging interface. Thisis illustrated in FIG. 2, where instructions 188 direct the user toperform an upward swipe to message the caller. As another example, atransition button may be displayed along with instructions that indicatethat pressing or otherwise selecting the button will result in atransition to the messaging interface. In other embodiments, theinstructions are omitted. In a particular embodiment, the instructionsare provided for a predetermined number of calls to instruct the userhow to access the messaging interface and then may be omitted for futureincoming calls.

Upon the detection of appropriate user input by device 180 a, amessaging interface is displayed. Any suitable user input may result inthe transition from the call notification interface to the messaginginterface. For example, if device 180 a includes a touch screen, anysuitable gesture may be used to effectuate the transition to themessaging interface. Such gestures may include moving an object such asa finger or stylus along the screen in a particular pattern, swiping thetouch screen (e.g., touching the screen with an object and quicklymoving the object in a particular direction while maintaining contactwith the screen), or contacting a particular area of the screen with anobject one or more times. User input may also include the pressing of amechanical button such as a key of a keypad or a button of a mouse.

FIG. 3 illustrates an example messaging interface 191 a displaying aconversation 194 a associated with a caller. Messaging interface 191 amay be displayed in response to a detection of appropriate user input byclient device 180 a while an incoming call is being received. Messaginginterface 191 may display any suitable caller identificationinformation, such as that described above in connection with callnotification interface 181. Messaging interface 191 a may display thesame caller identification information displayed in call notificationinterface 181 or messaging interface 191 a may display additional orless caller identification information. In particular embodiments, thecaller identification information is less prominent in messaginginterface 191 a than it is in call notification interface 181. Forexample, in the embodiment depicted, messaging interface 191 includes asmaller picture 182 b of the caller. Such embodiments may increase thespace available for conversation 194 a. Messaging interface 191 a mayinclude one or more links 192 to additional information about thecaller. For example, profile link 192 may link to a user profile of thecaller when pressed or otherwise selected.

In particular embodiments, the user input that causes the transition tomessaging interface 191 a may also cause the incoming call to berejected (e.g., the caller may be sent to voicemail or a busy signal maybe played). In other embodiments, the user input does not cause theincoming call to be rejected. In such embodiments, messaging interface191 may also display a notification of the incoming call. Thenotification may include any suitable indication of the incoming call,such as any indication described above with respect to call notificationinterface 181. In particular embodiments, the notification of theincoming call displayed by messaging interface 191 a is less prominentthan the notification of the incoming call displayed by callnotification interface 181. In various embodiments, the callee mayinteract with a portion of the notification to answer or reject theincoming call. For example, in the embodiment depicted, messaginginterface 191 a includes incoming call notification icon 186 b that maybe touched or otherwise selected to cause device 180 a to answer theincoming call.

Messaging interface 191 a displays conversation 194 a comprisingcommunications 196 between the callee and the caller. At least some ofthese communications may have occurred prior to the incoming call.Communications 196 may be any suitable type of communications. Forexample, a communication 196 may be an SMS or MMS message, a call (e.g.,a phone call, VoIP session, a video call), a voicemail, a push-to-talk(PTT) message, an email, an instant message, a tweet, a chat, a socialnetwork message (including a post on a wall of a social network websiteor a message sent via a social network website), or other communicationbetween the caller and the callee. A communication 196 may include textexchanged during the communication (e.g., the actual text of thecommunication or a voice transcription of the communication) or anysuitable information regarding the communication, such as the time orduration of the communication, whether the communication was anoutgoing, incoming, or missed communication, or other suitableinformation.

A conversation 194 may include various types of communications 196aggregated into a single communication thread. For example, if a usernamed Adam sends an instant message to a user named Bob and alsoseparately sends an e-mail to Bob, both of these messages may be placedinto the same conversation 194. Similarly, if Bob leaves Adam avoicemail, an indicator of the voicemail (such as the date and time itwas left) or transcribed text from the voicemail may be placed into theconversation 194. As another example, if Adam calls Bob, the log of thecall may also be placed in the conversation 194.

In particular embodiments, a conversation 194 displays communications196 in the same format regardless of the types of the communications196. For example, in the embodiment depicted in FIG. 3, the text of eachcommunication 196 appears in a conversation bubble. Thus, eachcommunication 196 of conversation 194 a appears the same regardless ofthe type of the particular communication. In other embodiments, theformat of a particular communication 196 is dependent on the type of thecommunication 196. For example, in the embodiment depicted in FIG. 3,each communication 196 includes one or more icons 197 depicting the typeof communication or an attribute of the communication.

Conversation 194 may display communications 196 in any suitable order.For example, communications 196 may be ordered based on the time of thecommunications, the types of the communications, the importance of thecommunication, or any other suitable factor. In particular embodiments,communications 196 of a particular type may be grouped together, and thegroup including the most recent communication may be displayed first. Inother embodiments, a particular communication 196 marked as importantare displayed before the most recent communication 196. In someembodiments, a subset of communications 196 of a particularcommunication type are grouped together. For example, emails having acommon subject may be grouped together.

In particular embodiments, the user of device 180 a may configurevarious aspects of messaging interface 191 a. For example, the user mayselect which caller identification information should be displayed, theformat of the caller identification information, the ordering ofcommunications 196 of conversation 194, which communication types aredisplayed in the conversation 194, or other suitable aspect of messaginginterface 191 a.

Communications 196 between the caller and the callee may be identifiedby device 180 in any suitable manner. The communications 196 may bestored at any suitable location, such as device 180, social networkingsystem 100, a third-party service, or a combination of the preceding. Anapplication local to device 180, residing at a server hosted by socialnetworking system 100, or at another suitable network location mayaggregate communications 196 between the caller and the callee,regardless of where the communications are stored. For example thecommunications 196 may be located on device 180, at social networkingsystem 100, or at a third-party service. The aggregation ofcommunications 196 may occur at any suitable time. For example, theaggregation may occur before the incoming call is received, in responseto the incoming call being received, or in response to the user inputthat causes the transition to the messaging interface 191. In particularembodiments, an existing conversation 194 is updated at the time of theincoming call by aggregating additional communications 196 with theconversation.

In particular embodiments, the application may communicate with devices180, social networking system 100, or third-party services 190, 210,220, 230, 240, or 250 to aggregate communications 196 between the callerand callee into a conversation 194. For example, the application mayreceive communications 196 from the social networking system 100 or thethird-party services and determine users that are participants in thecommunications 196. Accordingly, when the application receives a requestfor a conversation 194 between particular users (e.g., a caller and acallee), the application may identify communications 196 in which theusers are participants.

In particular embodiments, social networking system 100 may facilitatedetermination of the participants in a communication 196. Users ofsocial networking system 100 may be stored as objects in the socialnetworking system 100. For example, as described above, object store 110may include a profile for each user that comprises a profile name, ane-mail address, a profile picture, and other identifying information.Particular communications 196 may include identifying information thatmatches identifying information included in the profile of a user storedin object store 110. Accordingly, one or more users of the socialnetworking system 100 that participated in the communication may beidentified by accessing information stored by object store 110. Forexample, an e-mail from james.white@yahoo.com can be identified frominformation in the object store 110 as being an e-mail from the userJames White. As another example, a video chat facilitated throughthird-party video service 240 may involve participants that each have aspecific user ID. In particular embodiments, this user ID is stored withthe user profile in object store 110 and used to identify the socialnetwork users that participated in the video chat.

A conversation 194 including communications 196 between the caller andcallee may be obtained in any suitable manner. For example, informationidentifying the caller and callee may be passed to the application thataggregates the various communications 196 into conversations 194 and theapplication may return the appropriate conversation 194 between thecaller and callee. Any suitable identifying information may be used toidentify the caller and callee. For example, the telephone number,network address, user profile identifier, or other suitable identifyinginformation may be used to identify the caller or callee.

Messaging interface 191 a also includes a message entry area 198 thatthe callee may use to draft and transmit a communication 196 to thecaller. Message entry area 198 may display a keyboard, activate a speechrecognition application, or effectuate other text entry means inresponse to a touch or other selection from the callee. After text isentered via the keyboard, through the speech recognition application, orthrough other means, the text may be transmitted to the caller via anysuitable format. By way of example and not limitation, the text may betransmitted according to a communication type described above. Inparticular embodiments, the default communication type used to transmitthe text is an SMS message, but any other suitable type may be used suchas an email or social network message. In a particular embodiment, thecommunication type is based on a telephone number, network address, orother identifier associated with the incoming call. For example, if theincoming call is associated with a mobile phone number, thecommunication type may default to an SMS message, whereas if theincoming call is associated with a home phone number, then a differentcommunication type such as an email may be used. In particularembodiments, the communication type is selected based on the contactinformation available for the caller or the communication historybetween the caller and the callee. For example, if the majority ofcommunications 196 between the caller and the callee are emails, thetext entered in message entry area 198 may be sent via email. Messageentry area 198 may also include the option to attach a file to thecommunication 196, such as a picture, video, document, or other file.

Conversation 194 a can be updated in a real-time manner as newcommunications 196 are received or sent. Messaging interface 191 a mayallow a user to scroll backwards in time (or other order) to view theentire history of communications 196 in the conversation 194. In aparticular embodiment, some of the communications have attachments suchas pictures, videos, documents, or other files. The attachments can beshown in the messaging interface 191 a through a preview of theattachment instead of just a link to the attachment. For example, anattached picture can be shown in the interface with a thumbnail of thepicture.

FIG. 4 illustrates another example messaging interface 191 b displayinga conversation 194 b including various types of communications 196. Theconversation 194 b displayed depicts a one-on-one conversation betweenBob Jones and James White that comprises a series of communications 196of different types. Icons 197 within each communication 196 indicate thetype of the communication 196. Icon 197 d indicates that communication196 i is an e-mail. Icon 197 f indicates the e-mail to Bob Jones wasmarked by James as “urgent.” Icon 197 e depicts a paperclip,representing that the email includes an attachment. Icon 197 c indicatesthat communication 196 h is a text message sent from a phone. Icon 197 bindicates that the group of communications 196 g are instant messagesfrom the American Online Instant Messenger (AIM) service. Icon 197 aindicates that communication 196 f was an incoming phone call from JamesWhite. Communication 196 f includes information indicating that the callwas received yesterday at 11:00 AM and lasted 4 minutes, 53 seconds.

FIG. 5 illustrates an example method for providing a messaging interface191 based on a caller of an incoming call. The method may begin at step502, where notification of an incoming call is displayed. Thenotification may be displayed in response to the detection of anincoming call by client device 180. The notification may include anysuitable information, such as a message that indicates that an incomingcall is present and caller identification information associated withthe source of the incoming call. At step 504, user input is detected. Ifthe user input is entered while the notification of the incoming call isdisplayed and matches predetermined user input, the method moves to step506. The user input may be any suitable gesture, such as a swipeperformed on a touch screen, a press of a mechanical button, or otherinput. At step 506, the display of client device 180 transitions to amessaging interface 191. The messaging interface 191 may display anotification of the incoming call and a message entry area 198. Themessaging interface 191 may also display a conversation 194 between thecaller and the callee at step 508. The conversation 194 may includecommunications 196 between the caller and the callee that occurred priorto the initiation of the incoming call. The conversation 194 may includemultiple different communication types aggregated into a singlecommunication thread. At step 510, text from the callee is received. Forexample, the callee may input text via a keyboard or through a speechrecognition application. At step 512, the text is transmitted to thecaller using any suitable communication type and the method ends.

Particular embodiments may repeat one or more steps of the method ofFIG. 5, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 5 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 5 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates particular components,devices, or systems carrying out particular steps of the method of FIG.5, this disclosure contemplates any suitable combination of any suitablecomponents, devices, or systems carrying out any suitable steps of themethod of FIG. 5.

FIG. 6 illustrates an example computer system 600. In particularembodiments, one or more computer systems 600 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 600 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 600 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 600.

This disclosure contemplates any suitable number of computer systems600. For example, client devices 180, social networking system 100,third-party services, network 160, and wireless cellular network 300 mayeach include one or more computer systems or portions thereof. Thisdisclosure contemplates computer system 600 taking any suitable physicalform. As example and not by way of limitation, computer system 600 maybe an embedded computer system, a system-on-chip (SOC), a single-boardcomputer system (SBC) (such as, for example, a computer-on-module (COM)or system-on-module (SOM)), a desktop computer system, a laptop ornotebook computer system, an interactive kiosk, a mainframe, a mesh ofcomputer systems, a mobile telephone, a personal digital assistant(PDA), a server, a tablet computer system, or a combination of two ormore of these. Where appropriate, computer system 600 may include one ormore computer systems 600; be unitary or distributed; span multiplelocations; span multiple machines; span multiple datacenters; or residein a cloud, which may include one or more cloud components in one ormore networks. Where appropriate, one or more computer systems 600 mayperform without substantial spatial or temporal limitation one or moresteps of one or more methods described or illustrated herein. As anexample and not by way of limitation, one or more computer systems 600may perform in real time or in batch mode one or more steps of one ormore methods described or illustrated herein. One or more computersystems 600 may perform at different times or at different locations oneor more steps of one or more methods described or illustrated herein,where appropriate.

In particular embodiments, computer system 600 includes a processor 602,memory 604, storage 606, an input/output (I/O) interface 608, acommunication interface 610, and a bus 612. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 602 includes hardware for executinginstructions, such as those making up a computer program. As an exampleand not by way of limitation, to execute instructions, processor 602 mayretrieve (or fetch) the instructions from an internal register, aninternal cache, memory 604, or storage 606; decode and execute them; andthen write one or more results to an internal register, an internalcache, memory 604, or storage 606. In particular embodiments, processor602 may include one or more internal caches for data, instructions, oraddresses. This disclosure contemplates processor 602 including anysuitable number of any suitable internal caches, where appropriate. Asan example and not by way of limitation, processor 602 may include oneor more instruction caches, one or more data caches, and one or moretranslation lookaside buffers (TLBs). Instructions in the instructioncaches may be copies of instructions in memory 604 or storage 606, andthe instruction caches may speed up retrieval of those instructions byprocessor 602. Data in the data caches may be copies of data in memory604 or storage 606 for instructions executing at processor 602 tooperate on; the results of previous instructions executed at processor602 for access by subsequent instructions executing at processor 602 orfor writing to memory 604 or storage 606; or other suitable data. Thedata caches may speed up read or write operations by processor 602. TheTLBs may speed up virtual-address translation for processor 602. Inparticular embodiments, processor 602 may include one or more internalregisters for data, instructions, or addresses. This disclosurecontemplates processor 602 including any suitable number of any suitableinternal registers, where appropriate. Where appropriate, processor 602may include one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 602. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 604 includes main memory for storinginstructions for processor 602 to execute or data for processor 602 tooperate on. As an example and not by way of limitation, computer system600 may load instructions from storage 606 or another source (such as,for example, another computer system 600) to memory 604. Processor 602may then load the instructions from memory 604 to an internal registeror internal cache. To execute the instructions, processor 602 mayretrieve the instructions from the internal register or internal cacheand decode them. During or after execution of the instructions,processor 602 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor602 may then write one or more of those results to memory 604. Inparticular embodiments, processor 602 executes only instructions in oneor more internal registers or internal caches or in memory 604 (asopposed to storage 606 or elsewhere) and operates only on data in one ormore internal registers or internal caches or in memory 604 (as opposedto storage 606 or elsewhere). One or more memory buses (which may eachinclude an address bus and a data bus) may couple processor 602 tomemory 604. Bus 612 may include one or more memory buses, as describedbelow. In particular embodiments, one or more memory management units(MMUs) reside between processor 602 and memory 604 and facilitateaccesses to memory 604 requested by processor 602. In particularembodiments, memory 604 includes random access memory (RAM). This RAMmay be volatile memory, where appropriate Where appropriate, this RAMmay be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 604 may include one ormore memories 604, where appropriate. Although this disclosure describesand illustrates particular memory, this disclosure contemplates anysuitable memory.

In particular embodiments, storage 606 includes mass storage for data orinstructions. As an example and not by way of limitation, storage 606may include an HDD, a floppy disk drive, flash memory, an optical disc,a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB)drive or a combination of two or more of these. Storage 606 may includeremovable or non-removable (or fixed) media, where appropriate. Storage606 may be internal or external to computer system 600, whereappropriate. In particular embodiments, storage 606 is non-volatile,solid-state memory. In particular embodiments, storage 606 includesread-only memory (ROM). Where appropriate, this ROM may bemask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM),electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM),or flash memory or a combination of two or more of these. Thisdisclosure contemplates mass storage 606 taking any suitable physicalform. Storage 606 may include one or more storage control unitsfacilitating communication between processor 602 and storage 606, whereappropriate. Where appropriate, storage 606 may include one or morestorages 606. Although this disclosure describes and illustratesparticular storage, this disclosure contemplates any suitable storage.

In particular embodiments, I/O interface 608 includes hardware,software, or both providing one or more interfaces for communicationbetween computer system 600 and one or more I/O devices. Computer system600 may include one or more of these I/O devices, where appropriate. Oneor more of these I/O devices may enable communication between a personand computer system 600. As an example and not by way of limitation, anI/O device may include a keyboard, keypad, microphone, monitor, mouse,printer, scanner, speaker, still camera, stylus, tablet, touch screen,trackball, video camera, another suitable I/O device or a combination oftwo or more of these. An I/O device may include one or more sensors.This disclosure contemplates any suitable I/O devices and any suitableI/O interfaces 608 for them. Where appropriate, I/O interface 608 mayinclude one or more device or software drivers enabling processor 602 todrive one or more of these I/O devices. I/O interface 608 may includeone or more I/O interfaces 608, where appropriate. Although thisdisclosure describes and illustrates a particular I/O interface, thisdisclosure contemplates any suitable I/O interface.

In particular embodiments, communication interface 610 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 600 and one or more other computer systems 600 or one ormore networks. As an example and not by way of limitation, communicationinterface 610 may include a network interface controller (NIC) ornetwork adapter for communicating with an Ethernet or other wire-basednetwork or a wireless NIC (WNIC) or wireless adapter for communicatingwith a wireless network, such as a WI-FI network. This disclosurecontemplates any suitable network and any suitable communicationinterface 610 for it. As an example and not by way of limitation,computer system 600 may communicate with an ad hoc network, a personalarea network (PAN), a local area network (LAN), a wide area network(WAN), a metropolitan area network (MAN), or one or more portions of theInternet or a combination of two or more of these. One or more portionsof one or more of these networks may be wired or wireless. As anexample, computer system 600 may communicate with a wireless PAN (WPAN)(such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAXnetwork, a cellular telephone network (such as, for example, a GlobalSystem for Mobile Communications (GSM) network), or other suitablewireless network or a combination of two or more of these. Computersystem 600 may include any suitable communication interface 610 for anyof these networks, where appropriate. Communication interface 610 mayinclude one or more communication interfaces 610, where appropriate.Although this disclosure describes and illustrates a particularcommunication interface, this disclosure contemplates any suitablecommunication interface.

In particular embodiments, bus 612 includes hardware, software, or bothcoupling components of computer system 600 to each other. As an exampleand not by way of limitation, bus 612 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 612may include one or more buses 612, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, reference to a computer-readable storage medium encompasses oneor more non-transitory, tangible computer-readable storage mediapossessing structure. As an example and not by way of limitation, acomputer-readable storage medium may include a semiconductor-based orother integrated circuit (IC) (such, as for example, afield-programmable gate array (FPGA) or an application-specific IC(ASIC)), a hard disk, an HDD, a hybrid hard drive (HHD), an opticaldisc, an optical disc drive (ODD), a magneto-optical disc, amagneto-optical drive, a floppy disk, a floppy disk drive (FDD),magnetic tape, a holographic storage medium, a solid-state drive (SSD),a RAM-drive, a SECURE DIGITAL card, a SECURE DIGITAL drive, or anothersuitable computer-readable storage medium or a combination of two ormore of these, where appropriate. A computer-readable non-transitorystorage medium may be volatile, non-volatile, or a combination ofvolatile and non-volatile, where appropriate.

This disclosure contemplates one or more computer-readable storage mediaimplementing any suitable storage. In particular embodiments, acomputer-readable storage medium implements one or more portions ofprocessor 602 (such as, for example, one or more internal registers orcaches), one or more portions of memory 604, one or more portions ofstorage 606, or a combination of these, where appropriate. In particularembodiments, a computer-readable storage medium implements RAM or ROM.In particular embodiments, a computer-readable storage medium implementsvolatile or persistent memory. In particular embodiments, one or morecomputer-readable storage media embody software. Herein, reference tosoftware may encompass one or more applications, bytecode, one or morecomputer programs, one or more executables, one or more instructions,logic, machine code, one or more scripts, or source code, and viceversa, where appropriate. In particular embodiments, software includesone or more application programming interfaces (APIs). This disclosurecontemplates any suitable software written or otherwise expressed in anysuitable programming language or combination of programming languages.In particular embodiments, software is expressed as source code orobject code. In particular embodiments, software is expressed in ahigher-level programming language, such as, for example, C, Perl, or asuitable extension thereof. In particular embodiments, software isexpressed in a lower-level programming language, such as assemblylanguage (or machine code). In particular embodiments, software isexpressed in JAVA. In particular embodiments, software is expressed inHyper Text Markup Language (HTML), Extensible Markup Language (XML), orother suitable markup language.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

This disclosure encompasses all changes, substitutions, variations,alterations, and modifications to the example embodiments herein that aperson having ordinary skill in the art would comprehend. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,functions, operations, or steps, any of these embodiments may includeany combination or permutation of any of the components, elements,functions, operations, or steps described or illustrated anywhere hereinthat a person having ordinary skill in the art would comprehend.Furthermore, reference in the appended claims to an apparatus or systemor a component of an apparatus or system being adapted to, arranged to,capable of, configured to, enabled to, operable to, or operative toperform a particular function encompasses that apparatus, system,component, whether or not it or that particular function is activated,turned on, or unlocked, as long as that apparatus, system, or componentis so adapted, arranged, capable, configured, enabled, operable, oroperative.

What is claimed is:
 1. A method comprising: displaying by a mobilecomputing device of a first user a notification of an incoming call, thenotification identifying a second user associated with a source of theincoming call; detecting by the mobile computing device user inputprovided during the display of the notification of the incoming call; inresponse to the user input, determining by the mobile computing deviceone or more previous communications between the first and second users;and displaying by the mobile computing device the one or more previouscommunications.
 2. The method of claim 1, further comprising displayingby the mobile computing device at least a portion of the notification ofthe incoming call with the one or more previous communications.
 3. Themethod of claim 2, further comprising answering the incoming call upondetection of a selection of an icon associated with the notification ofthe incoming call, the selection occurring while the at least a portionof the notification of the incoming call is displayed with the one ormore previous communications.
 4. The method of claim 1, furthercomprising rejecting the incoming call in response to the detection ofthe user input.
 5. The method of claim 1, wherein the user inputcomprises a swipe of an object across a touch screen of the mobilecomputing device.
 6. The method of claim 1, further comprising:displaying a message entry area in response to the detection of the userinput; and transmitting a message received from the first user via themessage entry area to the second user.
 7. The method of claim 1, whereindisplaying the one or more previous communications comprises displayinga first communication having a first communication type and a secondcommunication having a second communication type distinct from the firstcommunication type, the first communication type and secondcommunication type each being one of a short message service (SMS)message, a multimedia messaging service (MMS) message, an email message,an instant message, a chat message, a message posted on a social mediawebsite, a voice call, a video call, a push-to-talk (PTT) message, or avoice message.
 8. The method of claim 7, wherein the first communicationand the second communication are displayed without an indication of thefirst communication type or the second communication type.
 9. The methodof claim 7, further comprising displaying an indication of the firstcommunication type and an indication of the second communication type.10. An apparatus comprising: a processor operable to: display to a firstuser a notification of an incoming call, the notification identifying asecond user associated with a source of the incoming call; and aninterface operable to: receive user input provided during the display ofthe notification of the incoming call; and wherein the processor isfurther operable to: in response to the user input, determine one ormore previous communications between the first and second users; anddisplay the one or more previous communications.
 11. The apparatus ofclaim 10, wherein the processor is further operable to display at leasta portion of the notification of the incoming call with the one or moreprevious communications.
 12. The apparatus of claim 10, wherein theprocessor is further operable to reject the incoming call in response tothe detection of the user input.
 13. The apparatus of claim 10, furthercomprising a touch screen and wherein the user input comprises a swipeof an object across the touch screen.
 14. The apparatus of claim 10,wherein the processor is further operable to: display a message entryarea in response to the detection of the user input; and transmit amessage received from the first user via the message entry area to thesecond user.
 15. The apparatus of claim 10, wherein displaying the oneor more previous communications comprises displaying a firstcommunication having a first communication type and a secondcommunication having a second communication type distinct from the firstcommunication type, the first communication type and secondcommunication type each being one of a short message service (SMS)message, a multimedia messaging service (MMS) message, an email message,an instant message, a chat message, a message posted on a social mediawebsite, a voice call, a video call, a push-to-talk (PTT) message, or avoice message.
 16. One or more non-transitory computer readable mediacomprising logic operable to: display to a first user a notification ofan incoming call, the notification identifying a second user associatedwith a source of the incoming call; detect user input provided duringthe display of the notification of the incoming call; in response to theuser input, determine one or more previous communications between thefirst and second users; and display the one or more previouscommunications.
 17. The media of claim 16, wherein the logic is furtheroperable to display at least a portion of the notification of theincoming call with the one or more previous communications.
 18. Themedia of claim 16, wherein the logic is further operable to reject theincoming call in response to the detection of the user input.
 19. Themedia of claim 16, wherein the user input comprises a swipe of an objectacross a touch screen of a mobile computing device.
 20. The media ofclaim 16, wherein the logic is further operable to: display a messageentry area in response to the detection of the user input; and transmita message received from the first user via the message entry area to thesecond user.
 21. The media of claim 16, wherein displaying the one ormore previous communications comprises displaying a first communicationhaving a first communication type and a second communication having asecond communication type distinct from the first communication type,the first communication type and second communication type each beingone of a short message service (SMS) message, a multimedia messagingservice (MMS) message, an email message, an instant message, a chatmessage, a message posted on a social media website, a voice call, avideo call, a push-to-talk (PTT) message, or a voice message.